/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Pions;
import GUI.Main;
import Others.Plateau;
import java.awt.Point;
import java.util.ArrayList;
import java.util.List;
public class Cavalier implements Piece{
int x;
int y;
Couleur couleur;
private String nom = "Cavalier";
public String getNom() {
return nom;
}
public Cavalier(){
this.x = 0;
this.y = 0;
this.couleur = Couleur.UNDEFINED;
}
public Cavalier(int x, int y, int couleur){
this.x = x;
this.y = y;
if(couleur == 0){
this.couleur = Couleur.BLANC;
}else if(couleur == 1){
this.couleur = Couleur.NOIR;
}else{
this.couleur = Couleur.UNDEFINED;
}
}
public Cavalier(int x, int y, Couleur couleur){
this.x = x;
this.y = y;
this.couleur = couleur;
}
@Override
public String getImage() {
if(couleur == Couleur.BLANC){
return "cavalierBlanc";
}else if(couleur == Couleur.NOIR){
return "cavalierNoir";
}else{
return "undefined";
}
}
@Override
public int getX() {
return this.x;
}
@Override
public int getY() {
return this.y;
}
@Override
public List<Point> getDeplacementPossible(Plateau[][] plateau) {
List<Point> points = new ArrayList<Point>();
this.addPoint(this.x-2, this.y-1, points, Direction.HAUT, plateau, couleur);
this.addPoint(this.x-2, this.y+1, points, Direction.HAUT, plateau, couleur);
this.addPoint(this.x+2, this.y-1, points, Direction.BAS, plateau, couleur);
this.addPoint(this.x+2, this.y+1, points, Direction.BAS, plateau, couleur);
this.addPoint(this.x-1, this.y-2, points, Direction.HAUT, plateau, couleur);
this.addPoint(this.x-1, this.y+2, points, Direction.HAUT, plateau, couleur);
this.addPoint(this.x+1, this.y-2, points, Direction.BAS, plateau, couleur);
this.addPoint(this.x+1, this.y+2, points, Direction.BAS, plateau, couleur);
return points;
}
private void addPoint(int newX, int newY, List<Point> points, Direction direction, Plateau[][] plateau, Couleur couleur) {
boolean colision = false;
if(newX >= 0 && newX <=7 && newY >=0 && newY <= 7){
if(plateau[newX][newY].getPion() != null){
if(plateau[newX][newY].getPion().getCouleur() == couleur){
colision = true;
}
}
}
if(newX >= 0 && newX <=7 && newY >=0 && newY <= 7 && !colision){
points.add(new Point(newX, newY));
}
}
@Override
public Couleur getCouleur() {
return this.couleur;
}
@Override
public void setX(int x) {
this.x = x;
}
@Override
public void setY(int y) {
this.y = y;
}
@Override
public Piece getInstance(Piece piece) {
Cavalier cavalier = new Cavalier(piece.getX(), piece.getY(), piece.getCouleur());
return cavalier;
}
}